/* Die Klasse HausnummerParser
 * 
 * Die Klasse HausnummerParser ist eine Subklasse von der TuringMaschine. 
 * Hier befindet sich die Initialisierug zur Erkennung einer gueltigen 
 * Hausnummer.
 * 
 * 
 * Datei:  Alphabet.java                Autor:    Martin Fischer
 * Datum:  27.11.2011            	Version:  1.0
 *
 *
 */
package kommunikation.Parser;

public class HausnummerParser extends TuringMaschine
{
  /*
   * Diese Methode Initialisiert die Turingmaschine Es wird eine Menge
   * gebrauchter Zustaende erzeugt. Jedem Zustnd wird keine oder mehrere
   * Konfigurationen zugewiesen. Es Wird ein neues Alphabet erzeugt (ein
   * String mit allen gueltigen Zeichen. Es wird ein neues Band erezugt
   * dem das Alphabet und das zu pruefende Wort uebergeben.
   */
  public void initialisieren (String eingabewort)
  {
	
    String alphabet = "*0123456789abcdefghijklmnopqrstuvwxyz-";

    zustaende = new Zustand[11];
    for (int i = 0; i < zustaende.length; i++)
    {
      zustaende[i] = new Zustand (i);
    }
    /* Zusatnd 0 */
    for (int i = 0; i < 11; i++)
    {
      zustaende[0].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[1]);
    }
    for (int i = 11; i < alphabet.length (); i++)
    {
      zustaende[0].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[8]);
    }
    /* Zustand 1 */
    for (int i = 1; i < 11; i++)
    {
      zustaende[1].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[1]);
    }
    for (int i = 11; i < alphabet.length () - 1; i++)
    {
      zustaende[1].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[2]);
    }
    zustaende[1].konfigHinzufuegen ('*', '*', Konfig.R, zustaende[7]);
    zustaende[1].konfigHinzufuegen ('-', '-', Konfig.R, zustaende[9]);
    /* Zustand 2 */
    for (int i = 1; i < alphabet.length () - 1; i++)
    {
      zustaende[2].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[8]);
    }
    zustaende[2].konfigHinzufuegen ('*', '*', Konfig.R, zustaende[7]);
    zustaende[2].konfigHinzufuegen ('-', '-', Konfig.R, zustaende[3]);
    /* Zustand 3 */
    for (int i = 1; i < 11; i++)
    {
      zustaende[3].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[5]);
    }
    for (int i = 11; i < alphabet.length () - 1; i++)
    {
      zustaende[3].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[4]);
    }
    zustaende[3].konfigHinzufuegen ('*', '*', Konfig.R, zustaende[8]);
    zustaende[3].konfigHinzufuegen ('-', '-', Konfig.R, zustaende[8]);
    /* Zustand 4 */
    for (int i = 1; i < alphabet.length (); i++)
    {
      zustaende[4].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[8]);
    }
    zustaende[4].konfigHinzufuegen ('*', '*', Konfig.R, zustaende[7]);
    /* Zustand 5 */
    for (int i = 1; i < 11; i++)
    {
      zustaende[5].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[5]);
    }
    zustaende[5].konfigHinzufuegen ('*', '*', Konfig.R, zustaende[7]);
    zustaende[5].konfigHinzufuegen ('-', '-', Konfig.R, zustaende[8]);
    for (int i = 11; i < alphabet.length () - 1; i++)
    {
      zustaende[5].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[6]);
    }
    /* Zustand 6 */
    for (int i = 1; i < alphabet.length (); i++)
    {
      zustaende[6].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[8]);
    }
    zustaende[6].konfigHinzufuegen ('*', '*', Konfig.R, zustaende[7]);
    /* Zustand 7 ist Endzustand */
    /* Zustand 8 ist Fehlerzustand */
    /* Zustand 9 */
    for (int i = 11; i < alphabet.length (); i++)
    {
      zustaende[9].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[8]);
    }
    zustaende[9].konfigHinzufuegen ('*', '*', Konfig.R, zustaende[8]);
    for (int i = 1; i < 11; i++)
    {
      zustaende[9].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[10]);
    } /* Zustand 10 */
    for (int i = 11; i < alphabet.length (); i++)
    {
      zustaende[10].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[8]);
    }
    zustaende[9].konfigHinzufuegen ('*', '*', Konfig.R, zustaende[7]);
    for (int i = 1; i < 11; i++)
    {
      zustaende[10].konfigHinzufuegen (alphabet.charAt (i),
	  alphabet.charAt (i), Konfig.R, zustaende[10]);
    }

    Alphabet a = new Alphabet (alphabet);
    band = new Band (a, eingabewort);
    aktuellerZustand = zustaende[0];
    fehlerZustand = zustaende[8];
  }
}
